﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using SMA.GENTEv1.Dados;

namespace SMA.GENTEv1
{
    public class TipoBeneficio
    {
        #region Enumeradores
        public enum TipoBenef
        {
            Auxilio_Funeral = 1,
            Cesta_Basica = 2,
            Auxilio_Creche = 3,
            Cafe_Manha = 4,
            Auxilio_Filho_Excepcional = 5,
            Convenio_Medico = 6,
            Vale_Transporte = 7,
            Vale_Alimentacao = 8,
            Vale_Refeicao = 9,
            Assistencia_Odontologica = 10,
            Seguro_Vida = 11
        }
        #endregion

        #region Variaveis Membro
        private int _idTipoBeneficio;
        private string _descricao;
        private GENTEEntities _context;
        #endregion

        #region Parametros
        public int IdTipoBeneficio
        {
            get { return _idTipoBeneficio; }
            set { _idTipoBeneficio = value; }
        }

        public string Descricao
        {
            get { return _descricao; }
            set { _descricao = value; }
        }
        #endregion

        #region Construtores
        public TipoBeneficio()
        {
            try
            {
                _context = new GENTEEntities();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public TipoBeneficio(int idTipoBeneficio, bool carregaDados)
        {
            if (!carregaDados)
                this._idTipoBeneficio = idTipoBeneficio;
            else
                Carregar(idTipoBeneficio);
        }
        #endregion

        #region Métodos Privados

        #region Métodos de Seleção
        private void Carregar(int idTipoBeneficio)
        {
            try
            {
                var consulta = (from tipobeneficio in _context.tab_tipo_beneficio
                                where tipobeneficio.id_tipo_beneficio == idTipoBeneficio
                                select tipobeneficio);

                var listConsulta = consulta.ToList();

                foreach (var list in listConsulta)
                {
                    this._idTipoBeneficio = list.id_tipo_beneficio;
                    this._descricao = list.descricao;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #endregion

        #region Métodos Públicos

        #region Métodos Gerais
        public int RetornaTipoDocumento(int idTipoBeneficio)
        {
            try
            {
                int resultado = 0;

                switch (idTipoBeneficio)
                {
                    case (int)TipoBenef.Auxilio_Creche:
                        resultado = (int)TipoDocumento.TipoDocto.Beneficios_AC;
                        break;
                    case (int)TipoBenef.Vale_Transporte:
                        resultado = (int)TipoDocumento.TipoDocto.Beneficios_VT;
                        break;
                    case (int)TipoBenef.Vale_Alimentacao:
                        resultado = (int)TipoDocumento.TipoDocto.Beneficios_VA;
                        break;
                    case (int)TipoBenef.Vale_Refeicao:
                        resultado = (int)TipoDocumento.TipoDocto.Beneficios_VR;
                        break;
                    case (int)TipoBenef.Cesta_Basica:
                        resultado = (int)TipoDocumento.TipoDocto.Beneficios_CB;
                        break;
                    case (int)TipoBenef.Convenio_Medico:
                        resultado = (int)TipoDocumento.TipoDocto.Beneficios_CM;
                        break;
                    case (int)TipoBenef.Assistencia_Odontologica:
                        resultado = (int)TipoDocumento.TipoDocto.Beneficios_AO;
                        break;
                }

                return resultado;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #endregion
    }
}
